A faceted search is a technique for accessing information organized according to a faceted classification system, allowing users to explore a collection of information by applying multiple filters. A faceted classification system classifies each information element along multiple explicit dimensions, enabling the classifications to be accessed and ordered in multiple ways rather than in a single, pre-determined, taxonomic order.
For example, a faceted classification system may be applied to the ordering and displaying of songs from a music storage device. For instance, the music stored in the music storage device could be displayed to the user via a user interface (music player interface) as a simple list of song titles. However, it helps the user to select a song to listen to if other properties, such as which songs belong to which album, which albums are by which musician, etc., were displayed to the user. Each item (e.g., song) in the data set (e.g., music stored in the music storage device) has a number of properties, such as artist, album, song title, duration, genre, etc. Furthermore, each property (e.g., artist) may have one or more values (e.g., Garth Brooks, Linkin Park). In a database of items, each property may be referred to as a “facet” of the data and each property instance may be referred to as a “facet value” or “constraint.”
Currently, the facets and the facet values that are displayed to the user via a user interface are typically presented in a static order. For example, the facets may be statically listed alphabetically. Often, the facets and facet values are displayed based on what the developer deems to be appropriate. For instance, referring to the music player interface discussed above, the developer of the music player interface may decide that it is better to list the album facet before the song length facet. Such an order of the facets will be displayed to all the users since the order is coded into the interface. However, such an order of the facets may not be desired by the particular user in question. Similarly, the facet values may be ordered in a particular manner as determined by the developer, such as by descending order. Again, such an order of the facet values will be displayed to all the users which may not be desired by the particular user in question.
Furthermore, by having the order of the facets and facet values displayed in the user interface determined by the developer of the user interface, the greater the number of facets and facet values displayed, the greater the effort is required on the part of the user to understand the choices available to the user and the longer it takes for the user to find the choices the user wants to apply.
In order to compensate for this problem, some of the user interfaces allow the user to have some control over the visibility and order of the facets. However, the display of the facets and facet values in the user interface is still static and stays as the user ordered it.
Such a solution may be acceptable in small data sets; however, most modern database applications, such as online shopping, involve the presentation of many different data sets simultaneously, each of which may include a large number of facets. For example, a user searching online for cleaning products may encounter a search result data set that contains dish brushes, vacuum cleaners, etc., each of which may include some common as well as different facets. The facets for such a result could be large and complex. In such cases, user control of the facets displayed in the user interface is manually performed thereby making it difficult and inefficient. Furthermore, keeping a static order of the facets and facet values overwhelms the user with choices, many of which are irrelevant to the particular user in question, and greatly slows the user's ability to navigate, refine and select particular database objects.